home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 4 / Macwelt DVD 4.cdr / Entwickler / Mac-OS / oxygen / oxygen.app / Contents / Resources / Java / oxygen.jar / builtin / XMLSchemaUtil.xsd < prev    next >
Encoding:
Extensible Markup Language  |  2002-09-09  |  23.5 KB  |  666 lines

  1. <?xml version='1.0'?>
  2. <!-- XML Schema schema for XML Schemas: Part 2: Datatypes -->
  3. <!DOCTYPE xs:schema 
  4. [
  5. <!-- Inclusion of XMLSchema.dtd starts here. tkamiya 2001-08-14 -->
  6.  
  7. <!-- With the exception of cases with multiple namespace
  8.      prefixes for the XML Schema namespace, any XML document which is
  9.      not valid per this DTD given redefinitions in its internal subset of the
  10.      'p' and 's' parameter entities below appropriate to its namespace
  11.      declaration of the XML Schema namespace is almost certainly not
  12.      a valid schema. -->
  13.  
  14. <!-- The simpleType element and its constituent parts
  15.      are defined in XML Schema: Part 2: Datatypes -->
  16.  
  17. <!-- Inclusion of datatypes.dtd starts here. tkamiya 2001-08-14 -->
  18.  
  19. <!-- !ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' -->
  20. <!-- %xs-datatypes; -->
  21.  
  22. <!--
  23.         DTD for XML Schemas: Part 2: Datatypes
  24.         $Id: XMLSchemaUtil.xsd,v 1.1 2002/04/10 12:21:58 george Exp $
  25.         Note this DTD is NOT normative, or even definitive. - - the
  26.         prose copy in the datatypes REC is the definitive version
  27.         (which shouldn't differ from this one except for this comment
  28.         and entity expansions, but just in case)
  29.   -->
  30.  
  31. <!ELEMENT xs:simpleType
  32.         ((xs:annotation)?, (xs:restriction | xs:list | xs:union))>
  33. <!ATTLIST xs:simpleType
  34.     name      NMTOKEN #IMPLIED
  35.     final     CDATA #IMPLIED
  36.     id        ID       #IMPLIED
  37.     >
  38. <!-- name is required at top level -->
  39. <!ELEMENT xs:restriction ((xs:annotation)?,
  40.                          (((xs:all | xs:choice | xs:sequence | xs:group)?) |
  41.                           ((xs:simpleType)?,((xs:minInclusive | xs:minExclusive) | (xs:maxInclusive | xs:maxExclusive) | xs:totalDigits | xs:fractionDigits | xs:pattern | xs:enumeration | xs:whiteSpace | xs:length | xs:maxLength | xs:minLength)*)),
  42.                          (((xs:attribute| xs:attributeGroup)*,(xs:anyAttribute)?)))>
  43. <!ATTLIST xs:restriction
  44.     base      NMTOKEN                  #IMPLIED
  45.     id        ID       #IMPLIED
  46.     >
  47. <!--
  48.         base and simpleType child are mutually exclusive,
  49.         one is required.
  50.  
  51.         restriction is shared between simpleType and
  52.         simpleContent and complexContent (in XMLSchema.xsd).
  53.         restriction1 is for the latter cases, when this
  54.         is restricting a complex type, as is attrDecls.
  55.   -->
  56. <!ELEMENT xs:list ((xs:annotation)?,(xs:simpleType)?)>
  57. <!ATTLIST xs:list
  58.     itemType      NMTOKEN             #IMPLIED
  59.     id        ID       #IMPLIED
  60.     >
  61. <!--
  62.         itemType and simpleType child are mutually exclusive,
  63.         one is required
  64.   -->
  65. <!ELEMENT xs:union ((xs:annotation)?,(xs:simpleType)*)>
  66. <!ATTLIST xs:union
  67.     id            ID       #IMPLIED
  68.     memberTypes   NMTOKENS            #IMPLIED
  69.     >
  70. <!--
  71.         At least one item in memberTypes or one simpleType
  72.         child is required
  73.   -->
  74.  
  75. <!ELEMENT xs:maxExclusive (xs:annotation)?>
  76. <!ATTLIST xs:maxExclusive
  77.         value CDATA #REQUIRED id ID #IMPLIED
  78.         fixed (true|false) #IMPLIED
  79.         >
  80. <!ELEMENT xs:minExclusive (xs:annotation)?>
  81. <!ATTLIST xs:minExclusive
  82.         value CDATA #REQUIRED id ID #IMPLIED
  83.         fixed (true|false) #IMPLIED
  84.         >
  85.  
  86. <!ELEMENT xs:maxInclusive (xs:annotation)?>
  87. <!ATTLIST xs:maxInclusive
  88.         value CDATA #REQUIRED id ID #IMPLIED
  89.         fixed (true|false) #IMPLIED
  90.         >
  91. <!ELEMENT xs:minInclusive (xs:annotation)?>
  92. <!ATTLIST xs:minInclusive
  93.         value CDATA #REQUIRED id ID #IMPLIED
  94.         fixed (true|false) #IMPLIED
  95.         >
  96.  
  97. <!ELEMENT xs:totalDigits (xs:annotation)?>
  98. <!ATTLIST xs:totalDigits
  99.         value CDATA #REQUIRED id ID #IMPLIED
  100.         fixed (true|false) #IMPLIED
  101.         >
  102. <!ELEMENT xs:fractionDigits (xs:annotation)?>
  103. <!ATTLIST xs:fractionDigits
  104.         value CDATA #REQUIRED id ID #IMPLIED
  105.         fixed (true|false) #IMPLIED
  106.         >
  107.  
  108. <!ELEMENT xs:length (xs:annotation)?>
  109. <!ATTLIST xs:length
  110.         value CDATA #REQUIRED id ID #IMPLIED
  111.         fixed (true|false) #IMPLIED
  112.         >
  113. <!ELEMENT xs:minLength (xs:annotation)?>
  114. <!ATTLIST xs:minLength
  115.         value CDATA #REQUIRED id ID #IMPLIED
  116.         fixed (true|false) #IMPLIED
  117.         >
  118. <!ELEMENT xs:maxLength (xs:annotation)?>
  119. <!ATTLIST xs:maxLength
  120.         value CDATA #REQUIRED id ID #IMPLIED
  121.         fixed (true|false) #IMPLIED
  122.         >
  123.  
  124. <!-- This one can be repeated -->
  125. <!ELEMENT xs:enumeration (xs:annotation)?>
  126. <!ATTLIST xs:enumeration
  127.         value CDATA #REQUIRED id ID #IMPLIED
  128.         >
  129.  
  130. <!ELEMENT xs:whiteSpace (xs:annotation)?>
  131. <!ATTLIST xs:whiteSpace
  132.         value CDATA #REQUIRED id ID #IMPLIED
  133.         fixed (true|false) #IMPLIED
  134.         >
  135.  
  136. <!-- This one can be repeated -->
  137. <!ELEMENT xs:pattern (xs:annotation)?>
  138. <!ATTLIST xs:pattern
  139.         value CDATA #REQUIRED id ID #IMPLIED
  140.         >
  141.  
  142. <!-- Inclusion of datatypes.dtd ends here. tkamiya 2001-08-14 -->
  143.  
  144. <!-- the duplication below is to produce an unambiguous content model
  145.      which allows annotation everywhere -->
  146. <!ELEMENT xs:schema ((xs:include | xs:import | xs:redefine | xs:annotation)*,
  147.                     ((xs:simpleType | xs:complexType
  148.                       | xs:element | xs:attribute
  149.                       | xs:attributeGroup | xs:group
  150.                       | xs:notation ),
  151.                      (xs:annotation)*)* )>
  152. <!ATTLIST xs:schema
  153.    targetNamespace      CDATA               #IMPLIED
  154.    version              CDATA                  #IMPLIED
  155.    xmlns:xs                CDATA               #FIXED 'http://www.w3.org/2001/XMLSchema'
  156.    xmlns:co             CDATA                  #FIXED 'http://www.iona.com/2001/XMLSchemaCompanion'
  157.    xmlns                CDATA                  #IMPLIED
  158.    finalDefault         CDATA ''
  159.    blockDefault         CDATA             ''
  160.    id                   ID                     #IMPLIED
  161.    elementFormDefault   (qualified|unqualified)           'unqualified'
  162.    attributeFormDefault (qualified|unqualified)           'unqualified'
  163.    xml:lang             CDATA                  #IMPLIED
  164.    >
  165. <!-- Note the xmlns declaration is NOT in the Schema for Schemas,
  166.      because at the Infoset level where schemas operate,
  167.      xmlns(:prefix) is NOT an attribute! -->
  168. <!-- The declaration of xmlns is a convenience for schema authors -->
  169.  
  170. <!-- The id attribute here and below is for use in external references
  171.      from non-schemas using simple fragment identifiers.
  172.      It is NOT used for schema-to-schema reference, internal or
  173.      external. -->
  174.  
  175. <!-- a type is a named content type specification which allows attribute
  176.      declarations-->
  177. <!-- -->
  178.  
  179. <!ELEMENT xs:complexType ((xs:annotation)?,
  180.                          (xs:simpleContent|xs:complexContent|
  181.                           ((xs:all | xs:choice | xs:sequence | xs:group)?, ((xs:attribute| xs:attributeGroup)*,(xs:anyAttribute)?))))>
  182.  
  183. <!ATTLIST xs:complexType
  184.           name      NMTOKEN                        #IMPLIED
  185.           id        ID                              #IMPLIED
  186.           abstract  (true|false)                       #IMPLIED
  187.           final     CDATA          #IMPLIED
  188.           block     CDATA          #IMPLIED
  189.           mixed (true|false) 'false'
  190.           >
  191.  
  192. <!-- particleAndAttrs is shorthand for a root type -->
  193. <!-- mixed is disallowed if simpleContent, overriden if complexContent
  194.      has one too. -->
  195.  
  196. <!-- If anyAttribute appears in one or more referenced attributeGroups
  197.      and/or explicitly, the intersection of the permissions is used -->
  198.  
  199. <!ELEMENT xs:complexContent (xs:restriction|xs:extension)>
  200. <!ATTLIST xs:complexContent
  201.           mixed (true|false) #IMPLIED
  202.           id    ID           #IMPLIED
  203.           >
  204.  
  205. <!-- restriction should use the branch defined above, not the simple
  206.      one from part2; extension should use the full model  -->
  207.  
  208. <!ELEMENT xs:simpleContent (xs:restriction|xs:extension)>
  209. <!ATTLIST xs:simpleContent
  210.           id    ID           #IMPLIED
  211.           >
  212.  
  213. <!-- restriction should use the simple branch from part2, not the 
  214.      one defined above; extension should have no particle  -->
  215.  
  216. <!ELEMENT xs:extension (((xs:all | xs:choice | xs:sequence | xs:group)?, ((xs:attribute| xs:attributeGroup)*,(xs:anyAttribute)?)))>
  217. <!ATTLIST xs:extension
  218.           base  NMTOKEN      #REQUIRED
  219.           id    ID           #IMPLIED
  220.           >
  221.  
  222. <!-- an element is declared by either:
  223.  a name and a type (either nested or referenced via the type attribute)
  224.  or a ref to an existing element declaration -->
  225.  
  226. <!ELEMENT xs:element ((xs:annotation)?, (xs:complexType| xs:simpleType)?,
  227.                      (xs:unique | xs:key | xs:keyref)*)>
  228. <!-- simpleType or complexType only if no type|ref attribute -->
  229. <!-- ref not allowed at top level -->
  230. <!ATTLIST xs:element
  231.             name               NMTOKEN               #IMPLIED
  232.             id                 ID                     #IMPLIED
  233.             ref                NMTOKEN                #IMPLIED
  234.             type               NMTOKEN                #IMPLIED
  235.             minOccurs          NMTOKEN   #IMPLIED
  236.             maxOccurs          CDATA                  #IMPLIED
  237.             nillable           (true|false)              #IMPLIED
  238.             substitutionGroup  NMTOKEN                #IMPLIED
  239.             abstract           (true|false)              #IMPLIED
  240.             final              CDATA #IMPLIED
  241.             block              CDATA             #IMPLIED
  242.             default            CDATA                  #IMPLIED
  243.             fixed              CDATA                  #IMPLIED
  244.             form               (qualified|unqualified)           #IMPLIED
  245.             >
  246. <!-- type and ref are mutually exclusive.
  247.      name and ref are mutually exclusive, one is required -->
  248. <!-- In the absence of type AND ref, type defaults to type of
  249.      substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
  250. <!-- default and fixed are mutually exclusive -->
  251.  
  252. <!ELEMENT xs:group ((xs:annotation)?,(xs:all | xs:choice | xs:sequence)?)>
  253. <!ATTLIST xs:group 
  254.           name        NMTOKEN               #IMPLIED
  255.           ref         NMTOKEN                #IMPLIED
  256.           minOccurs   NMTOKEN   #IMPLIED
  257.           maxOccurs   CDATA                  #IMPLIED
  258.           id          ID                     #IMPLIED
  259.           >
  260.  
  261. <!ELEMENT xs:all ((xs:annotation)?, (xs:element)*)>
  262. <!ATTLIST xs:all
  263.           minOccurs   (1)                    #IMPLIED
  264.           maxOccurs   (1)                    #IMPLIED
  265.           id          ID                     #IMPLIED
  266.           >
  267.  
  268. <!ELEMENT xs:choice ((xs:annotation)?, (xs:element| xs:group| xs:choice | xs:sequence | xs:any)*)>
  269. <!ATTLIST xs:choice
  270.           minOccurs   NMTOKEN   #IMPLIED
  271.           maxOccurs   CDATA                  #IMPLIED
  272.           id          ID                     #IMPLIED
  273.           >
  274.  
  275. <!ELEMENT xs:sequence ((xs:annotation)?, (xs:element| xs:group| xs:choice | xs:sequence | xs:any)*)>
  276. <!ATTLIST xs:sequence
  277.           minOccurs   NMTOKEN   #IMPLIED
  278.           maxOccurs   CDATA                  #IMPLIED
  279.           id          ID                     #IMPLIED
  280.           >
  281.  
  282. <!-- an anonymous grouping in a model, or
  283.      a top-level named group definition, or a reference to same -->
  284.  
  285. <!-- Note that if order is 'all', group is not allowed inside.
  286.      If order is 'all' THIS group must be alone (or referenced alone) at
  287.      the top level of a content model -->
  288. <!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
  289. <!-- Should allow minOccurs=0 inside order='all' . . . -->
  290.  
  291. <!ELEMENT xs:any (xs:annotation)?>
  292. <!ATTLIST xs:any
  293.             namespace       CDATA                  '##any'
  294.             processContents (skip|lax|strict)      'strict'
  295.             minOccurs       NMTOKEN   '1'
  296.             maxOccurs       CDATA                  '1'
  297.             id              ID                     #IMPLIED
  298.             >
  299.  
  300. <!-- namespace is interpreted as follows:
  301.                   ##any      - - any non-conflicting WFXML at all
  302.  
  303.                   ##other    - - any non-conflicting WFXML from namespace other
  304.                                   than targetNamespace
  305.  
  306.                   ##local    - - any unqualified non-conflicting WFXML/attribute
  307.                   one or     - - any non-conflicting WFXML from
  308.                   more URI        the listed namespaces
  309.                   references
  310.  
  311.                   ##targetNamespace ##local may appear in the above list,
  312.                     with the obvious meaning -->
  313.  
  314. <!ELEMENT xs:anyAttribute (xs:annotation)?>
  315. <!ATTLIST xs:anyAttribute
  316.             namespace       CDATA              '##any'
  317.             processContents (skip|lax|strict)  'strict'
  318.             id              ID                 #IMPLIED
  319.             >
  320. <!-- namespace is interpreted as for 'any' above -->
  321.  
  322. <!-- simpleType only if no type|ref attribute -->
  323. <!-- ref not allowed at top level, name iff at top level -->
  324. <!ELEMENT xs:attribute ((xs:annotation)?, (xs:simpleType)?)>
  325. <!ATTLIST xs:attribute
  326.           name      NMTOKEN      #IMPLIED
  327.           id        ID            #IMPLIED
  328.           ref       NMTOKEN       #IMPLIED
  329.           type      NMTOKEN       #IMPLIED
  330.           use       (prohibited|optional|required) #IMPLIED
  331.           default   CDATA         #IMPLIED
  332.           fixed     CDATA         #IMPLIED
  333.           form      (qualified|unqualified)  #IMPLIED
  334.           >
  335. <!-- type and ref are mutually exclusive.
  336.      name and ref are mutually exclusive, one is required -->
  337. <!-- default for use is optional when nested, none otherwise -->
  338. <!-- default and fixed are mutually exclusive -->
  339. <!-- type attr and simpleType content are mutually exclusive -->
  340.  
  341. <!-- an attributeGroup is a named collection of attribute decls, or a
  342.      reference thereto -->
  343. <!ELEMENT xs:attributeGroup ((xs:annotation)?,
  344.                        (xs:attribute | xs:attributeGroup)*,
  345.                        (xs:anyAttribute)?) >
  346. <!ATTLIST xs:attributeGroup
  347.                  name       NMTOKEN       #IMPLIED
  348.                  id         ID             #IMPLIED
  349.                  ref        NMTOKEN        #IMPLIED
  350.                  >
  351.  
  352. <!-- ref iff no content, no name.  ref iff not top level -->
  353.  
  354. <!-- better reference mechanisms -->
  355. <!ELEMENT xs:unique ((xs:annotation)?, xs:selector, (xs:field)+)>
  356. <!ATTLIST xs:unique
  357.           name     NMTOKEN       #REQUIRED
  358.       id       ID             #IMPLIED
  359.       >
  360.  
  361. <!ELEMENT xs:key    ((xs:annotation)?, xs:selector, (xs:field)+)>
  362. <!ATTLIST xs:key
  363.           name     NMTOKEN       #REQUIRED
  364.       id       ID             #IMPLIED
  365.       >
  366.  
  367. <!ELEMENT xs:keyref ((xs:annotation)?, xs:selector, (xs:field)+)>
  368. <!ATTLIST xs:keyref
  369.           name     NMTOKEN       #REQUIRED
  370.       refer    NMTOKEN        #REQUIRED
  371.       id       ID             #IMPLIED
  372.       >
  373.  
  374. <!ELEMENT xs:selector ((xs:annotation)?)>
  375. <!ATTLIST xs:selector
  376.           xpath CDATA #REQUIRED
  377.           id    ID          #IMPLIED
  378.           >
  379. <!ELEMENT xs:field ((xs:annotation)?)>
  380. <!ATTLIST xs:field
  381.           xpath CDATA #REQUIRED
  382.           id    ID          #IMPLIED
  383.           >
  384.  
  385. <!-- Schema combination mechanisms -->
  386. <!ELEMENT xs:include (xs:annotation)?>
  387. <!ATTLIST xs:include
  388.           schemaLocation CDATA #REQUIRED
  389.           id             ID       #IMPLIED
  390.           >
  391.  
  392. <!ELEMENT xs:import (xs:annotation)?>
  393. <!ATTLIST xs:import
  394.           namespace      CDATA #IMPLIED
  395.           schemaLocation CDATA #IMPLIED
  396.           id             ID       #IMPLIED
  397.           >
  398.  
  399. <!ELEMENT xs:redefine (xs:annotation | xs:simpleType | xs:complexType |
  400.                       xs:attributeGroup | xs:group)*>
  401. <!ATTLIST xs:redefine
  402.           schemaLocation CDATA #REQUIRED
  403.           id             ID       #IMPLIED
  404.           >
  405.  
  406. <!ELEMENT xs:notation (xs:annotation)?>
  407. <!ATTLIST xs:notation
  408.       name        NMTOKEN    #REQUIRED
  409.       id          ID          #IMPLIED
  410.       public      CDATA       #REQUIRED
  411.       system      CDATA    #IMPLIED
  412.       >
  413.  
  414. <!-- Annotation is either application information or documentation -->
  415. <!-- By having these here they are available for datatypes as well
  416.      as all the structures elements -->
  417.  
  418. <!ELEMENT xs:annotation (xs:appinfo | xs:documentation)*>
  419.  
  420. <!-- User must define annotation elements in internal subset for this
  421.      to work -->
  422. <!ELEMENT xs:appinfo ANY>   <!-- too restrictive -->
  423. <!ATTLIST xs:appinfo
  424.           source     CDATA      #IMPLIED
  425.           id         ID         #IMPLIED
  426.           >
  427. <!ELEMENT xs:documentation ANY>   <!-- too restrictive -->
  428. <!ATTLIST xs:documentation
  429.           source     CDATA   #IMPLIED
  430.           id         ID         #IMPLIED
  431.           xml:lang   CDATA      #IMPLIED
  432.           >
  433.  
  434. <!NOTATION XMLSchemaStructures PUBLIC
  435.            'structures' 'http://www.w3.org/2001/XMLSchema.xsd' >
  436. <!NOTATION XML PUBLIC
  437.            'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >
  438.  
  439. <!-- Inclusion of XMLSchema.dtd ends here. tkamiya 2001-08-14 -->
  440.  
  441. <!--
  442.         Make sure that processors that do not read the external
  443.         subset will know about the various IDs we declare
  444.   -->
  445.         <!ATTLIST xs:simpleType id ID #IMPLIED>
  446.         <!ATTLIST xs:maxExclusive id ID #IMPLIED>
  447.         <!ATTLIST xs:minExclusive id ID #IMPLIED>
  448.         <!ATTLIST xs:maxInclusive id ID #IMPLIED>
  449.         <!ATTLIST xs:minInclusive id ID #IMPLIED>
  450.         <!ATTLIST xs:totalDigits id ID #IMPLIED>
  451.         <!ATTLIST xs:fractionDigits id ID #IMPLIED>
  452.         <!ATTLIST xs:length id ID #IMPLIED>
  453.         <!ATTLIST xs:minLength id ID #IMPLIED>
  454.         <!ATTLIST xs:maxLength id ID #IMPLIED>
  455.         <!ATTLIST xs:enumeration id ID #IMPLIED>
  456.         <!ATTLIST xs:pattern id ID #IMPLIED>
  457.         <!ATTLIST xs:appinfo id ID #IMPLIED>
  458.         <!ATTLIST xs:documentation id ID #IMPLIED>
  459.         <!ATTLIST xs:list id ID #IMPLIED>
  460.         <!ATTLIST xs:union id ID #IMPLIED>
  461. ]>
  462. <xs:schema xmlns:co="http://www.iona.com/2001/XMLSchemaCompanion"
  463.     xmlns:xs="http://www.w3.org/2001/XMLSchema"
  464.         targetNamespace="http://www.iona.com/2001/XMLSchemaCompanion"
  465.         elementFormDefault="qualified"
  466.         blockDefault="#all"
  467.         xml:lang="en">
  468.  
  469.   <!-- Simple-type declarations have been removed. They do not parse. - tkamiya 2001-08-06 -->
  470.  
  471.  <xs:simpleType name="derivationControl">
  472.   <xs:annotation>
  473.    <xs:documentation>
  474.    A utility type, not for public use</xs:documentation>
  475.   </xs:annotation>
  476.   <xs:restriction base="xs:NMTOKEN">
  477.    <xs:enumeration value="substitution"/>
  478.    <xs:enumeration value="extension"/>
  479.    <xs:enumeration value="restriction"/>
  480.    <xs:enumeration value="list"/>
  481.    <xs:enumeration value="union"/>
  482.   </xs:restriction>
  483.  </xs:simpleType>
  484.  
  485.  <xs:simpleType name="simpleDerivationSet">
  486.   <xs:annotation>
  487.    <xs:documentation>
  488.    #all or (possibly empty) subset of {restriction, union, list}
  489.    </xs:documentation>
  490.    <xs:documentation>
  491.    A utility type, not for public use</xs:documentation>
  492.   </xs:annotation>
  493.   <xs:union>
  494.    <xs:simpleType>    
  495.     <xs:restriction base="xs:token">
  496.      <xs:enumeration value="#all"/>
  497.     </xs:restriction>
  498.    </xs:simpleType>
  499.    <xs:simpleType>
  500.     <xs:restriction base="co:derivationControl">
  501.      <xs:enumeration value="list"/>
  502.      <xs:enumeration value="union"/>
  503.      <xs:enumeration value="restriction"/>
  504.     </xs:restriction>
  505.    </xs:simpleType>
  506.   </xs:union>
  507.  </xs:simpleType>
  508.  
  509.  <xs:simpleType name="formChoice">
  510.   <xs:annotation>
  511.    <xs:documentation>
  512.    A utility type, not for public use</xs:documentation>
  513.   </xs:annotation>
  514.   <xs:restriction base="xs:NMTOKEN">
  515.    <xs:enumeration value="qualified"/>
  516.    <xs:enumeration value="unqualified"/>
  517.   </xs:restriction>
  518.  </xs:simpleType>
  519.  
  520.  <xs:simpleType name="reducedDerivationControl">
  521.   <xs:annotation>
  522.    <xs:documentation>
  523.    A utility type, not for public use</xs:documentation>
  524.   </xs:annotation>
  525.   <xs:restriction base="co:derivationControl">
  526.    <xs:enumeration value="extension"/>
  527.    <xs:enumeration value="restriction"/>
  528.   </xs:restriction>
  529.  </xs:simpleType>
  530.  
  531.  <xs:simpleType name="derivationSet">
  532.   <xs:annotation>
  533.    <xs:documentation>
  534.    A utility type, not for public use</xs:documentation>
  535.    <xs:documentation>
  536.    #all or (possibly empty) subset of {extension, restriction}</xs:documentation>
  537.   </xs:annotation>
  538.   <xs:union>
  539.    <xs:simpleType>    
  540.     <xs:restriction base="xs:token">
  541.      <xs:enumeration value="#all"/>
  542.     </xs:restriction>
  543.    </xs:simpleType>
  544.    <xs:simpleType>
  545.     <xs:list itemType="co:reducedDerivationControl"/>
  546.    </xs:simpleType>
  547.   </xs:union>
  548.  </xs:simpleType>
  549.  
  550.   <xs:simpleType name="blockSet">
  551.    <xs:annotation>
  552.     <xs:documentation>
  553.     A utility type, not for public use</xs:documentation>
  554.     <xs:documentation>
  555.     #all or (possibly empty) subset of {substitution, extension,
  556.     restriction}</xs:documentation>
  557.    </xs:annotation>
  558.    <xs:union>
  559.     <xs:simpleType>    
  560.      <xs:restriction base="xs:token">
  561.       <xs:enumeration value="#all"/>
  562.      </xs:restriction>
  563.     </xs:simpleType>
  564.     <xs:simpleType>
  565.      <xs:list>
  566.       <xs:simpleType>
  567.        <xs:restriction base="co:derivationControl">
  568.         <xs:enumeration value="extension"/>
  569.         <xs:enumeration value="restriction"/>
  570.         <xs:enumeration value="substitution"/>
  571.        </xs:restriction>
  572.       </xs:simpleType>
  573.      </xs:list>
  574.     </xs:simpleType>
  575.    </xs:union>  
  576.   </xs:simpleType>
  577.  
  578.  <xs:simpleType name="namespaceList">
  579.   <xs:annotation>
  580.    <xs:documentation>
  581.    A utility type, not for public use</xs:documentation>
  582.   </xs:annotation>
  583.   <xs:union>
  584.    <xs:simpleType>
  585.     <xs:restriction base="xs:token">
  586.      <xs:enumeration value="##any"/>
  587.      <xs:enumeration value="##other"/>
  588.     </xs:restriction>
  589.    </xs:simpleType>
  590.    <xs:simpleType>
  591.     <xs:list>
  592.      <xs:simpleType>
  593.       <xs:union memberTypes="xs:anyURI">
  594.        <xs:simpleType>
  595.         <xs:restriction base="xs:token">
  596.          <xs:enumeration value="##targetNamespace"/>
  597.          <xs:enumeration value="##local"/>
  598.         </xs:restriction>
  599.        </xs:simpleType>
  600.       </xs:union>
  601.      </xs:simpleType>
  602.     </xs:list>
  603.    </xs:simpleType>
  604.   </xs:union>
  605.  </xs:simpleType>
  606.  
  607.  <xs:simpleType name="public">
  608.   <xs:annotation>
  609.    <xs:documentation>
  610.    A utility type, not for public use</xs:documentation>
  611.    <xs:documentation>
  612.    A public identifier, per ISO 8879</xs:documentation>
  613.   </xs:annotation>
  614.   <xs:restriction base="xs:token"/>
  615.  </xs:simpleType>
  616.  
  617.  <xs:simpleType name="zeroOrOne">
  618.   <xs:annotation>
  619.    <xs:documentation>
  620.    A utility type, not for public use. 2001-08-08 tkamiya
  621.    </xs:documentation>
  622.   </xs:annotation>
  623.   <xs:restriction base="xs:nonNegativeInteger">
  624.    <xs:enumeration value="0"/>
  625.    <xs:enumeration value="1"/>
  626.   </xs:restriction>
  627.  </xs:simpleType>
  628.  
  629.  <xs:simpleType name="allNNI">
  630.   <xs:annotation><xs:documentation>
  631.    for maxOccurs</xs:documentation></xs:annotation>
  632.   <xs:union memberTypes="xs:nonNegativeInteger">
  633.    <xs:simpleType>
  634.     <xs:restriction base="xs:NMTOKEN">
  635.      <xs:enumeration value="unbounded"/>
  636.     </xs:restriction>
  637.    </xs:simpleType>
  638.   </xs:union>
  639.  </xs:simpleType>
  640.  
  641.  <xs:simpleType name="allNNIZeroOrOne">
  642.   <xs:annotation>
  643.    <xs:documentation>
  644.    A utility type, not for public use. 2001-08-08 tkamiya
  645.    </xs:documentation>
  646.   </xs:annotation>
  647.   <xs:restriction base="co:allNNI">
  648.    <xs:enumeration value="0"/>
  649.    <xs:enumeration value="1"/>
  650.   </xs:restriction>
  651.  </xs:simpleType>
  652.  
  653.  <xs:simpleType name="allNNIJustOne">
  654.   <xs:annotation>
  655.    <xs:documentation>
  656.    A utility type, not for public use. 2001-08-08 tkamiya
  657.    </xs:documentation>
  658.   </xs:annotation>
  659.   <xs:restriction base="co:allNNI">
  660.    <xs:enumeration value="1"/>
  661.   </xs:restriction>
  662.  </xs:simpleType>
  663.  
  664. </xs:schema>
  665.  
  666.